
NoSQL DB는 전통적인 관계형 데이터베이스(RDBMS)와 다른 방식으로 데이터를 저장·관리하는 데이터베이스 계열을 가리키는 포괄적 용어입니다. 주된 특징과 개념은 다음과 같습니다. - 의미와 어원 - 원래는 “non-SQL” 또는 “Not only SQL”로 불렸으며, 엄밀히 말하면 “SQL을 전혀 쓰지 않는다”는 뜻보다는 “관계형·스키마 중심 모델 이외의 대안적 모델”을 의미합니다. - 주요 데이터 모델 유형 - 키-값 스토어: 단순 키와 값의 쌍 저장(예: Redis, DynamoDB). 캐시·세션 등에 적합. - 문서 DB: JSON/BSON 같은 문서 단위로 저장하고 유연한 스키마 제공(예: MongoDB, Couchbase). - 컬럼 패밀리(폭넓은 칼럼): 대량의 쓰기·읽기에 최적화(예: Cassandra, HBase). - 그래프 DB: 노드와 엣지로 복잡한 관계를 표현(예: Neo4j, JanusGraph). - 시계열 DB 등 특화형도 존재(예: InfluxDB). - 스키마 유연성 - 정형 스키마를 미리 정의하지 않아도 되고, 레코드마다 다른 필드를 가질 수 있어 개발 속도와 변경 요구에 유리합니다. - 확장성 - 수평 분산(샤딩)을 통한 확장에 초점. 대용량·고트래픽 환경에서 수평 확장이 용이하도록 설계된 경우가 많습니다. - 일관성 모델과 트레이드오프 - ACID(관계형의 강한 트랜잭션 보장) 대신 BASE(기본 가용성, 소프트 상태, 최종 일관성) 개념을 채용하는 경우가 흔합니다. - CAP 정리(일관성 Consistency, 가용성 Availability, 분할 허용성 Partition tolerance) 관점에서 설계 선택이 필요합니다. - 장점 - 스키마 변경이 잦은 애플리케이션에 유리, 대규모 분산 처리와 높은 쓰기·읽기 처리량에 강함, 데이터 모델(문서·그래프 등)이 도메인 표현과 직관적으로 맞을 수 있음. - 단점 및 한계 - 복잡한 조인·관계 쿼리가 약하거나 비효율적, 일관성 요구가 매우 엄격한 트랜잭션 처리에는 부적합한 경우가 있음, 쿼리 언어·운영 방식이 제품별로 달라 학습 비용 발생. - 실무적 고려 - NoSQL은 관계형 DB의 완전한 대체가 아니라 용도별 보완 도구로 보는 것이 일반적입니다. 요구사항(일관성, 쿼리 복잡도, 확장성, 지연시간 등)에 따라 적합한 DB 유형을 선택합니다. - 대표 제품 - MongoDB, Cassandra, Redis, DynamoDB, Couchbase, Neo4j 등. 요약: NoSQL DB는 유연한 스키마와 다양한 데이터 모델(키-값, 문서, 컬럼, 그래프 등), 분산·수평 확장성을 강조하는 데이터베이스 군으로, 특정 사용 사례에서 관계형 DB보다 더 적합한 장점과 각각의 트레이드오프를 지닙니다.